package com.partner.frame;

/**
 * Created by dwr on 2017/2/21.
 */
public class LocationUtils {
	private static double EARTH_RADIUS = 6378.137;

	private static double rad(double d) {
		return d * Math.PI / 180.0;
	}

	/**
	 * 通过经纬度获取距离(单位：米)
	 * 
	 * @param lat1
	 * @param lng1
	 * @param lat2
	 * @param lng2
	 * @return
	 */
	public static double getDistance(double y1, double x1, double y2,
			double x2) {
		double radLat1 = rad(y1);
		double radLat2 = rad(y2);
		double a = radLat1 - radLat2;
		double b = rad(x1) - rad(x2);
		double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
				+ Math.cos(radLat1) * Math.cos(radLat2)
				* Math.pow(Math.sin(b / 2), 2)));
		s = s * EARTH_RADIUS;
		s = Math.round(s * 10000d) / 10000d;
		s = s * 1000;
		return s;
	}
	/**
	 * 通过经纬度获取距离(单位：米)
	 * 
	 * @param lat1
	 * @param lng1
	 * @param lat2
	 * @param lng2
	 * @return
	 */
	public static double GetDistance(double y1, double x1, double y2, double x2)
	{

		double radLat1 = rad(y1);
		double radLat2 = rad(y2);
		double a = radLat1 - radLat2;
		double b = rad(x1) - rad(x2);
		double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
		Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
		s = s * EARTH_RADIUS;

		return s;

	}

	public static void main(String[] args) {
		double y1 = 43.850857;
		double x1 = 125.33279;
		double y2 = 43.859063;
		double x2 = 125.33279;

		System.out.println(LocationUtils.getDistance(y1, x1, y2, x2));

	}
}
